// 文件名：map_prefix_query.cpp
// 目的：在有序映射（std::map）内进行“前缀查询”，高效列出以某前缀开头的所有键值。
// 思路：
//   - 使用 lower_bound(prefix) 找到第一个不小于 prefix 的迭代器作为起点；
//   - 之后线性向后遍历，只要 key 仍以 prefix 开头即输出；
//   - 复杂度：O(log N + K*L)，其中 N=条目数，K=匹配数量，L=比较开销。
// 细节：
//   - 比较使用 string::compare(0, prefix.size(), prefix) == 0 判断前缀匹配；
//   - 使用 std::less<> 以支持异构比较（此处可与 string_view 协同）。

#include <iostream>
#include <map>
#include <string>

int main() {
    std::map<std::string, std::string, std::less<>> config = {
        {"app.name", "CatalogService"},
        {"app.port", "8080"},
        {"db.host", "10.0.0.12"},
        {"db.port", "5432"},
        {"db.pool.size", "16"},
        {"feature.search.enabled", "true"}
    };

    std::string prefix = "db.";
    auto it = config.lower_bound(prefix);

    std::cout << "Entries with prefix \"" << prefix << "\":\n";
    for (; it != config.end() && it->first.compare(0, prefix.size(), prefix) == 0; ++it) {
        std::cout << "  " << it->first << " = " << it->second << '\n';
    }
    return 0;
}